The present invention relates generally to the manipulation of mathematical expressions and equations. More particularly, the invention is related to an apparatus for displaying and manipulating expression elements and equations in mathematical form.
Systems for manipulating mathematical expressions and equations typically take the form of an interactive methodology running on a computer in which commands are entered on a keyboard to appear on a display screen. One such methodology permits the entry of an expression such as: EQU diff(sin(ln(x 2+1)/3), x);
After the "diff" (differentiate) command is performed, the result is: ##EQU1##
As can be seen from the above, the user must type in a command (diff) in front of the expression for the system to perform an operation on the expression. This is inconvenient and does not permit the user to directly interact and understand the derivational steps performed by the system.
A convention which has developed in many of the prior art mathematical manipulation systems is an operation which "evaluates" an expression. For example, if a user wants to expand an expression such as (x+1).sup.3, he might enter a command such as "expand((x+1) 3);". The "expand" function takes a symbolic expression and generates an equivalent expression which is displayed in an expanded form. Many such operations are provided by the system, some generating equivalent expressions and some generating completely different expressions. For example, the solution of a system of two linear equations may involve the entry of an expression such as: EQU solve({a=b+2, b+a=t}, {a, b});
In response, the system generates an expression which solves for the variables a and b. A generated response may look like: EQU {a=t/2+1, b=t/2-1}
Strictly speaking, both the input and output expressions are understandable equations which represent a mathematical derivation. However, a person using the system to generate the response does not get an understanding of how the derivation stepped from the input equations to the generated response.
Symbolic algebra methodologies have inherited many concepts from simpler math methodologies and interactive programming languages. For example, a user may assign symbolic values to variables and set up the previous "solve" command in the following way: EQU eq1 :=a=b+2; EQU eq2 :=b+a=t; EQU solve ({eq1, eq2}, {a, b});
In this set of expressions, variables eq1 and eq2 are assigned symbolic expressions for equations which are subsequently substituted into any equation in which they occur. For some purposes, it may be desirable to prevent the mathematical system from expanding variables until a later point in time. In this case, the variable name may be prefixed with a quotation mark or enclosed in another function. For more subtle situations, it may be necessary to perform a variety of other functions to control the exact timing of the substitution. The result which is initially desired becomes more and more complicated to obtain.
A variety of other mathematical manipulation systems have been developed. Some of the other problems present in these systems are that the arrangement of equations is in the sequential form of a word processor rather than the hierarchial form of an outliner. It is difficult for a user to hide unwanted conclusions and/or results. Another difficulty which presents itself in a mathematical manipulation system is that a particular operation on an equation is performed upon depression of a key which would not be the natural selection of a user first using the program. For example, in some systems the expression "(ab+da)/16x=4x" is modified by selecting the "a" and entering a command which modifies the equation to "a(b+d)/16x=4x." The "16x" can be selected and moved to the right side of the equation by inputting a second command. This technique has the disadvantage of requiring many commands to achieve a resulting equation particularly when working with large expressions. Further, this system does not generate conclusions and there is no automatic generation of a sequence of steps.
Many disadvantages exist with respect to the solution of mathematical problems through computer based mathematical manipulation systems. One problem which is widely attributed to such systems is the lack of facilities for arranging the results of derivations. Another difficulty which is commonly experienced is the inability to select and work with individual elements of an expression.
Other disadvantages contained in previous mathematical manipulation systems are the inability to use greek letters, the necessity for a multiply symbol (usually in the form of a star, rather than the ability to place symbols adjacent one another), and the awkward recognition and use of a variety of parentheses symbols.